const jwt = require("jsonwebtoken")
const config = require("../config/config")
const auth = require('basic-auth')
module.exports = {
    //判断当前是否处于登录状态的公共中间件
    async auth(ctx,next){
        try {
            // const token = ctx.headers.authorization;
            var token = auth(ctx.req).name;
            console.log(token);
            //如果user能被成功的解析出来 说明token是没有过期的 且 真实有效的
            const user = jwt.verify(token,config.tokenCipher)
            ctx.user = user;
        }catch (e) {
            ctx.throw(401,"请先登录;如果已登录,登录时效可能过期")
        }
        //1. 如果token过期;会进catch 执行ctx.throw;那之后的代码都不会被执行
        //2. 如果token有效;进下一个中间件
        await next()
    },
    //判断登录用户与指定用户是否是同一个
    async equalUser(ctx,next){
        //指定用户的id
        const id = ctx.params.id;
        //登录用户
        const userId = ctx.user._id;
        console.log(id , userId)
        if(id === userId){
            await next()
        }else {
            ctx.throw(403,"登录用户不合法 与指定的上传头像的目标用户不是同一个")
        }
    },
    //
    zdy(ctx){
        ctx.body = "zdy"
    }
}